package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
)

func main() {
	// 发送http请求 不携带query参数
	// resp, err := http.Get("http://127.0.0.1:8001/static")
	// if err != nil {
	// 	fmt.Printf("err: %v\n", err)
	// 	return
	// }

	// b, err := ioutil.ReadAll(resp.Body)
	// if err != nil {
	// 	fmt.Println("read resp.Body failed.err", err)
	// }
	// defer resp.Body.Close()
	// fmt.Printf("b: %v\n", string(b[:]))

	// 发送http请求 携带query参数
	// 方式1
	// http.NewRequest("GET", "http://127.0.0.1:8001/static?name=tom&pwd=1234")
	// 方式2
	urlObj, _ := url.Parse("http://127.0.0.1:8001/static")
	urlData := url.Values{} // url encode
	urlData.Set("key", "value")
	urlData.Set("name", "张三")
	urlData.Set("pwd", "135fba")
	queryStr := urlData.Encode() //url encode之后的url

	urlObj.RawQuery = queryStr
	fmt.Printf("query编码之后的数据: %v\n", queryStr)
	req, err := http.NewRequest("GET", urlObj.String(), nil)
	// 禁用KeepAlive的client
	tr := &http.Transport{
		DisableKeepAlives: true,
	}
	client := http.Client{
		Transport: tr,
	}
	resp, err := client.Do(req)
	// resp, err := http.DefaultClient.Do(req) // 创建客户端
	// resp, err := http.DefaultClient.Do(req) // 创建客户端
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}
	defer resp.Body.Close()
	b, err := ioutil.ReadAll(resp.Body)
	fmt.Println(string(b))
}
